package com.wis.service.impl;

import com.wis.entity.BannerEntity;
import com.wis.mapper.BannerMapper;
import com.wis.service.BannerService;
import com.wis.util.CommonResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * Banner服务实现类
 * 负责处理Banner相关的业务逻辑
 */
@Service
public class BannerServiceImpl implements BannerService {

    @Resource  // 注入Banner数据访问层
    private BannerMapper bannerMapper;

    @Value("${server.port}")  // 从配置文件中注入服务器端口
    private String port;

    @Value("${server.ip}")    // 从配置文件中注入服务器IP
    private String ip;

    /**
     * 添加Banner
     * @param banner Banner实体对象
     * @return 操作结果
     */
    @Override
    public CommonResult addBanner(BannerEntity banner) {
        // 调用Mapper插入数据
        int i = bannerMapper.addBanner(banner);
        if (i > 0) {  // 插入成功
            return CommonResult.build(200, "ok", i, banner);
        }
        // 插入失败
        return CommonResult.build(500, "no", i, banner);
    }

    /**
     * 更新Banner信息
     * @param banner Banner实体对象
     * @return 操作结果
     */
    @Override
    public CommonResult updateBanner(BannerEntity banner) {
        // 调用Mapper更新数据
        int i = bannerMapper.updateBanner(banner);
        if (i > 0) {  // 更新成功
            return CommonResult.build(200, "ok", i, banner);
        }
        // 更新失败
        return CommonResult.build(500, "no", i, banner);
    }

    /**
     * 更新Banner图片
     * @param banner Banner实体对象（主要使用id和img字段）
     * @return 操作结果
     */
    @Override
    public CommonResult updateBannerImg(BannerEntity banner) {
        // 调用Mapper更新图片
        int i = bannerMapper.updateBannerImg(banner);
        if (i > 0) {  // 更新成功
            return CommonResult.build(200, "ok", i, banner);
        }
        // 更新失败
        return CommonResult.build(500, "no", i, banner);
    }

    /**
     * 删除Banner
     * @param id Banner ID
     * @return 操作结果
     */
    @Override
    public CommonResult delBanner(int id) {
        // 调用Mapper删除数据
        int i = bannerMapper.delBanner(id);
        if (i > 0) {  // 删除成功
            return CommonResult.build(200, "ok", i, id);
        }
        // 删除失败
        return CommonResult.build(500, "no", i, id);
    }

    /**
     * 查询所有Banner
     * @return 包含Banner列表的通用结果
     */
    @Override
    public CommonResult showAll() {
        // 查询所有Banner数据
        List<BannerEntity> bannerEntities = bannerMapper.showAll();

        // 为每个Banner的图片URL添加服务器地址前缀
        for (BannerEntity bannerEntity : bannerEntities) {
            bannerEntity.setImg("http://" + ip + ":" + 8866 + bannerEntity.getImg());
        }

        // 返回结果（包含记录数和数据列表）
        return CommonResult.build(200, "ok", bannerEntities.size(), bannerEntities);
    }

    @Override
    public CommonResult showByName(String name) {
        List<BannerEntity> bannerEntities = bannerMapper.showByName(name);

        // 为每个Banner的图片URL添加服务器地址前缀
        for (BannerEntity bannerEntity : bannerEntities) {
            bannerEntity.setImg("http://" + ip + ":" + 8866 + bannerEntity.getImg());
        }

        // 返回结果（包含记录数和数据列表）
        return CommonResult.build(200, "ok", bannerEntities.size(), bannerEntities);
    }
}